# -*- coding: utf-8 -*-
"""
@Time ： 2021/10/26 22:28
@Auth ： Mr.Kd 1548826452
@Company ：特斯汀学院 @testingedu.com.cn
@Function ：请输入模块功能描述
"""
import pytest
import os
from excel.ReaderExecl import get_reader
from keywords.webkeys import Web

class Conf:

    def __init__(self):
        self.feature = "测试项目"
        self.feature_idx = 0
        self.story = "测试分组"

        # 保存一个模块里面所有的用例
        self.cases = []
        # 初始化关键字对象
        self.obj = Web()
        # 记录运行的sheet和用例的序号
        self.s_idx = 1
        self.c_idx = 1


    def runCase(self,case_file=''):
        #读取文件
        reader=get_reader(case_file)
        #读取sheet页面
        sheetnames=reader.get_sheets()
        #遍历sheet页
        for sheet in sheetnames:
            # print(sheet)
            reader.set_sheets(sheet)
            #读取每一个sheet也的行

            #项目名称
            self.feature=sheet
            self.feature_idx+=1
            lines = reader.readline()
            case=[]
            self.story_idx = 0
            for i in range(1, len(lines)):
                # print(lines[i])
                line = lines[i]
                # 如果是模块
                if len(line[0]) > 1:
                    # 如果已经统计完了一个用例
                    if case:
                        self.cases.append(case)
                        # 执行
                        self.__run_pytest()
                        case = []
                    # 记录模块名字
                    self.story = line[0]
                    self.story_idx += 1
                # 如果是用例
                elif len(line[1]) > 1:
                    if case:
                        self.cases.append(case)
                        # 重置case
                        case = []
                    case.append(line)
                # 如果是步骤
                else:
                    # 把步骤添加到用例列表里
                    case.append(line)

            # 保存和运行最后一个模块的用例
            if case:
                self.cases.append(case)
            if self.cases:
                # 执行
                self.__run_pytest()
            self.s_idx += 1
        os.rename('./ddt/test_%s_%s.py' % (self.s_idx - 1, self.c_idx - 1), './ddt/test_web.py')
        self.obj.quit()
        print('退出')
    def __run_pytest(self):

        if self.c_idx==1:
            os.rename('./ddt/test_web.py','./ddt/test_1_1.py')
        else:
            try:
                os.rename('./ddt/test_%s_%s.py'%(self.s_idx,self.c_idx-1),
                          './ddt/test_%s_%s.py'% (self.s_idx,self.c_idx))
            except:
                os.rename('./ddt/test_%s_%s.py'%(self.s_idx-1,self.c_idx-1),
                          './ddt/test_%s_%s.py'%(self.s_idx,self.c_idx))
        pytest.main(['-s','./ddt/test_%s_%s.py'%(self.s_idx,self.c_idx),'--alluredir','./Webresult'])
        self.c_idx += 1
        self.cases.clear()

conf=Conf()
if __name__ == '__main__':
    conf.runCase()





